home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_olv_head2.cog < prev    next >
Text File  |  1999-11-15  |  9KB  |  398 lines

  1. # Level 9: Valley Of The Old Ones.
  2. #
  3. # olv_head2.cog         slide rockhead 2.
  4. #
  5. # [DS & revised by HB]
  6. #
  7. # (C) 1999 LucasArts Entertainment Company LLC. All Rights Reserved
  8. #
  9. # ==============================================================================
  10.  
  11. Symbols
  12.  
  13.     message        startup
  14.        message        entered
  15.     message        activated
  16.     message        exited
  17.     message        touched
  18.     message        pulse
  19.     message        crossed
  20.  
  21.     keyframe    smashed=in_die_fall.key                    local
  22.     keyframe    falldown=olv_rock_headb.key                local
  23.  
  24.     sound        Death=tem_temspikes_up_kill_c.wav            local
  25.     sound        trap=inxj041a.wav                        local # I sense a trap...
  26.     sound        nope=inxj058.wav                        local # That wont work.
  27.     sound        release=gen_stonebutt_push_c.wav            local
  28.     sound        slidsnd=olv_head2_slide_c.wav                local
  29.     sound        hitsnd=olv_rockhead_hitearth_c.wav            local
  30.     sound        hitstone=pru_boulder_crash_c.wav            local
  31.  
  32.     thing        player                                    local 
  33.  
  34.     thing        head2
  35.     thing        push1
  36.     thing        head2_cam_1                                nolink
  37.     thing        head2_poscam                            nolink
  38.     thing        head2_ct_1                                nolink
  39.     thing        skeleton                                nolink
  40.     thing        head2b                                nolink
  41.         
  42.     surface        tube0
  43.     surface        drop0                                    mask=0x480
  44.     surface        drop1
  45.     surface        playerstop0                            nolink
  46.     surface        playerstop1                            nolink
  47.     sector        safe_sec
  48.  
  49.     # ........debris to block pushblock........
  50.     surface        blockface
  51.     surface        blockface_back
  52.     thing        debrispos
  53.     template    debris0=stnshrpa                        local
  54.     template    debris1=stnshrpb                        local
  55.     template    debris2=stnshrpc                        local
  56.  
  57.     cog            noworktalkcog
  58.     cog            hints                        # send message when complete 
  59.     
  60.     vector        v_campos                        local
  61.     
  62.     float        slidespeed1=12.0
  63.     float        slidespeed2=20.0
  64.  
  65.     int        curcam                            local
  66.     int        dropredy=0                            local
  67.     int        rel                                local
  68.     int        moven                                local
  69.     int        slid=1                            local
  70.     int        talking=0                            local
  71.     int        vibe=0                            local
  72.     int        shake=0                            local
  73.     int        inway=0                            local
  74.     int        safe=0                            local
  75.  
  76.     flex        victim            local
  77.     vector    posoffset            local
  78.     vector    angoffset            local
  79.  
  80. end
  81.  
  82. # ==============================================================================
  83.  
  84. code
  85.  
  86. # ..............................................................................
  87.  
  88. startup:
  89.  
  90.     player=GetLocalPlayerThing();
  91.     SetAdjoinFlags(blockface, 2);                        # passable
  92.     SetThingLight(push1, '0.5 0.5 0.4', 0.01, 0.01);
  93.     SetThingLight(skeleton, '0.3 0.2 0.3', 0.01, 0.01);
  94.     SetThingFlags(head2b, 0x80000);
  95.     return;
  96.  
  97. # ..............................................................................
  98.  
  99. entered:
  100.  
  101.     if (dropredy > 1)
  102.     {
  103.         return;
  104.     }
  105.     if (GetSenderRef() == drop1)
  106.     {
  107.         inway=1;
  108.         return;
  109.     }
  110.  
  111.     if ((getsenderref() == tube0) && (dropredy == 0))
  112.     {
  113.         SendMessageEx(hints, user1, 1, 0, 0, 0);    #param0=1; standing on pad.
  114.         rel = PlaySoundThing(release, head2, 1, 20, 25, 0);
  115.         waitforsound(rel);
  116.         PlayVoice(player, trap, 1.0, 0);
  117.         return;
  118.     }
  119.     if ((GetSenderRef() == safe_sec) && (GetSourceRef() == player))
  120.     {
  121.         safe=1;
  122.         return;
  123.     }
  124.     return;
  125.  
  126. # ..............................................................................
  127.  
  128. exited:
  129.  
  130.     if (dropredy > 1)
  131.     {
  132.         return;
  133.     }
  134.     if (GetSenderRef() == drop1)
  135.     {
  136.         inway=0;
  137.         return;
  138.     }
  139.     if ((GetSenderRef() == safe_sec) && (GetSourceRef() == player))
  140.     {
  141.         safe=0;
  142.         return;
  143.     }
  144.     if (getsenderref() == tube0)
  145.     {
  146.         if(dropredy == 1) return;
  147.         dropredy=1;
  148.         slid=0;
  149.  
  150.         SetAdjoinFlags(playerstop0, 0x10);
  151.         SetAdjoinFlags(playerstop1, 0x10);
  152.  
  153.         rel = PlaySoundThing(release, head2, 1, 20, 25, 0);
  154.         waitforsound(rel);
  155.         moven = PlaySoundThing(slidsnd, head2, 1, 20, 25, 1);
  156.         MoveToFrame(head2, 1, slidespeed1);
  157.         sleep(3.0);
  158.         shake = 1;
  159.         SetPulse(0.1);
  160.         PlaySoundThing(hitstone, head2, 1, 20, 25, 0);
  161.         SetCollideType(push1, 0);
  162.         MoveToFrame(head2, 2, slidespeed1);
  163.         MoveToFrame(head2, 3, slidespeed2);
  164.         WaitForStop(head2);
  165.         PlaySoundThing(hitstone, head2, 1, 20, 25, 0);
  166.         SetCollideType(push1, 3);
  167.         MoveToFrame(head2, 4, slidespeed1);
  168.         WaitforStop(head2);
  169.         StopSound(moven, 0.01);
  170.         PlaySoundThing(hitstone, head2, 1, 20, 25, 0);
  171.         SetPulse(0.0);
  172.         ClearAdjoinFlags(blockface, 2); # No move
  173.         CreateThing(debris0, debrispos);
  174.         slid=1;
  175.         return;
  176.     }
  177.  
  178.     if ((getsenderref() == drop0) && (getsourceref() == head2) && (dropredy == 1))
  179.     {
  180.         SetAdjoinFlags(blockface, 2);             # passable
  181.         if (GetMoveStatus(player) == 8) return;        # Pulling.
  182.         if ((GetMoveStatus(player) == 7) && (inway == 1)) return;
  183.  
  184.         curcam = GetCurrentCamera();
  185.         SetActorFlags(player, 0x200000);
  186.         StartCutscene(1);
  187.  
  188.         # Watch him push for a beat...
  189.         Sleep(4.0);
  190.  
  191.         StopThing(player);
  192.         PlayMode(player, 1, 0);
  193.         dropredy = 2;
  194.         slid=0;
  195.         sleep(0.01);
  196.         moven = PlaySoundThing(slidsnd, head2, 1, 20, 25, 1);
  197.         MoveToFrame(head2, 5, 1);
  198.         MoveToFrame(head2, 6, 5);
  199.         Sleep(1.5);
  200.         StopSound(moven, 0.01);
  201.  
  202.  
  203.         # Cut to shot of rock emerging from cliff face...
  204.         SetCameraLookInterp(2, 0);
  205.         SetCameraPosInterp(2, 0);
  206.         SetCameraFocus(2, head2_cam_1);
  207.         SetCameraSecondaryFocus(2, head2_ct_1);
  208.         SetCurrentCamera(2);
  209.         SetCAmeraFOV(80, 0, 0.0);
  210.         Sleep(0.01);
  211.         SetCameraFOV(60, 1, 1.8);
  212.         WaitForStop(head2);
  213.  
  214.         DestroyThing(head2);
  215.         ClearThingFlags(head2b, 0x80000);
  216.  
  217.         PlayKey(head2b, falldown, 10, 0x12, 0);
  218.         sleep(0.8);
  219.         PlaySoundThing(hitsnd, head2, 1, 20, 25, 0);
  220.         shake = 2;
  221.         SetPulse(0.1);
  222.         Sleep(1.0);
  223.         SetPulse(0.0);
  224.         slid=1;
  225.         Sleep(1.0);
  226.         v_campos = GetThingPOS(head2_poscam); 
  227.         SetCameraPosition(1, v_campos); # prep to swing back to follow-cam
  228.         Sleep(0.01);
  229.         ResetCameraFOV(0, 0.0);
  230.         SetCurrentCamera(curcam);
  231.         ResetCameraFOV(0, 0.0);
  232.         EndCutscene();
  233.         ClearActorFlags(player, 0x200000);
  234.         SendMessageEx(hints, user1, 2, 0, 0, 0);    #param0=2; Rock head valley.
  235.     }
  236.  
  237.     return;
  238.  
  239. # ..............................................................................
  240.  
  241. touched:
  242.  
  243.     if (slid == 1)
  244.     {
  245.         return;
  246.     }
  247.     if (safe == 1)        # In safe sector.
  248.     {
  249.         return;
  250.     }
  251.     if ((GetSenderRef() == head2) && (GetSourceRef() == player))
  252.     {
  253.         ClearActorFlags(player, 0x8);
  254.         DamageThing(player, 1000.0, 0x1, victim);
  255.         SetCollideType(head2, 0);
  256.         PlaySoundLocal(Death, 1.0, 0.0, 0x0, 0);
  257.         PlayKey(player, smashed, 10, 0x14, 0);
  258.     }
  259.  
  260.     return;
  261.  
  262. # ..............................................................................
  263.  
  264. activated:
  265.  
  266.     if (getsenderref() == blockface)
  267.     {
  268.         if (talking == 1)
  269.         {
  270.             return;
  271.         }
  272.  
  273.         talking = 1;
  274.             MakeMeStop();
  275.             DeselectWeaponWait(player);
  276.             StartCutscene(0);
  277.  
  278.         PlayMode(player, 60, 0);
  279.  
  280.         SendMessageEx(noworktalkcog, user0, player, 0, 0, 0);
  281.         global15 = 0;
  282.         while (global15 == 0)
  283.         {
  284.             Sleep(0.01); # wait for voice to finish
  285.         }
  286.         
  287.         talking = 0;
  288.         ClearActorFlags(player, 0x200000);
  289.         EndCutscene();
  290.     }
  291.  
  292.     return;
  293.  
  294. # ..............................................................................
  295.  
  296. pulse:
  297.  
  298.     vibe = RandBetween(1, 4);
  299.     if (vibe == 1)
  300.     {
  301.         if (shake == 1)
  302.         {
  303.             posOffset = '-0.005 0.00 -0.001'; #1 was .005x
  304.             angOffset = '0.00 -0.001 0.001';
  305.         }
  306.         if (shake == 2)
  307.         {
  308.             posOffset = '0.01 -0.01 0.005'; #2
  309.             angOffset = '0.005 0.00 -0.005';
  310.         }
  311.         if (shake == 3)
  312.         {
  313.             posOffset = '0.01 0.02 -0.02'; #3
  314.             angOffset = '-0.01 0.01 -0.01';
  315.         }
  316.     }
  317.     if (vibe == 2)
  318.     {
  319.         if (shake == 1)
  320.         {
  321.             posOffset = '0.005 -0.002 0.001'; #2 was .005x
  322.             angOffset = '0.001 0.00 -0.001';
  323.         }
  324.         if (shake == 2)
  325.         {
  326.             posOffset = '0.005 0.01 -0.01'; #3
  327.             angOffset = '-0.005 0.005 -0.00';
  328.         }
  329.         if (shake == 3)
  330.         {
  331.             posOffset = '-0.02 0.00 0.02'; #4 was .01x
  332.             angOffset = '0.00 0.00 0.01';
  333.         }
  334.     }
  335.     if (vibe == 3)
  336.     {
  337.         if (shake == 1)
  338.         {
  339.             posOffset = '0.002 0.002 -0.002'; #3 was .002x
  340.             angOffset = '-0.001 0.002 -0.002';
  341.         }
  342.         if (shake == 2)
  343.         {
  344.             posOffset = '-0.015 0.00 0.01'; #4 was .01x
  345.             angOffset = '0.00 0.00 0.01';
  346.         }
  347.         if (shake == 3)
  348.         {
  349.             posOffset = '-0.025 0.00 -0.01'; #1 was .02x
  350.             angOffset = '0.00 -0.01 0.01';
  351.         }
  352.     }
  353.     if (vibe == 4)
  354.     {
  355.         if (shake == 1)
  356.         {
  357.             posOffset = '-0.001 0.00 0.002'; #4
  358.             angOffset = '0.00 0.00 0.001';
  359.         }
  360.         if (shake == 2)
  361.         {
  362.             posOffset = '-0.01 0.00 -0.005'; #1
  363.             angOffset = '0.00 -0.005 0.005';
  364.         }
  365.         if (shake == 3)
  366.         {
  367.             posOffset = '0.02 -0.02 0.01'; #2
  368.             angOffset = '0.01 0.00 -0.01';
  369.         }
  370.     }
  371.  
  372.     vibe = RandBetween(1, 3);
  373.     if (vibe == 1)
  374.     {
  375.         SetPulse(0.05);
  376.     }
  377.     if (vibe == 2)
  378.     {
  379.         SetPulse(0.1);
  380.     }
  381.     if (vibe == 3)
  382.     {
  383.         SetPulse(0.15);
  384.     }
  385.  
  386.     SetPOVShake(posOffSet, angOffSet, 200.0, 200.0);
  387.  
  388.     return;
  389.  
  390. crossed:
  391.     if (getsenderref() == blockface_back)
  392.     {
  393.     SetThingLight(push1, '0.1 0.1 0.0', 0.01, 2.0);
  394.     }
  395.     return;
  396.  
  397. end
  398.